export const SessionType = {
  /** 单聊 */
  SINGLE: 0,
  /** 群聊 */
  GROUP: 1,
} as const;

export type SessionType = (typeof SessionType)[keyof typeof SessionType];

/**
 * 聊天会话类型
 */
export interface ChatSession {
  /** 会话ID（群聊时为群ID） */
  sessionId: string;
  /** 会话头像 */
  sessionAvatar: string;
  /** 会话名称 */
  sessionName: string;
  /** 会话类型 0单聊 1群聊 */
  sessionType: SessionType;
  /** 最后一条消息ID */
  lastMessageId?: string;
  /** 最后一条消息内容 */
  lastMessage?: string;
  /** 未读消息数 */
  unreadCount: number;
  /** 是否开启消息通知 0否 1是 */
  notice: boolean;
  /** 是否置顶 0否 1是 */
  pined: boolean;
  /** 草稿内容 */
  draft?: string;
  /** 是否免打扰 0否 1是 */
  disturb: boolean;
  /** 更新时间 时间戳 */
  updateTime: number;
}

/**
 * 聊天会话创建类型
 */
export interface ChatSessionCreate {
  /** 拥有者ID */
  ownerId: string;
  /** 会话ID（群聊时为群ID） */
  sessionId: string;
  /** 会话类型 0单聊 1群聊 */
  sessionType: SessionType;
}

/**
 * 聊天会话创建类型
 */
export interface ChatSessionUpdate {
  /** 拥有者ID */
  ownerId: string;
  /** 会话ID（群聊时为群ID） */
  sessionId: string;
  /** 会话类型 0单聊 1群聊 */
  sessionType?: SessionType;
  /** 最后一条消息ID */
  lastMessageId?: string;
  /** 最后一条消息内容 */
  lastMessage?: string;
  /** 未读消息数 */
  unreadCount?: number;
  /** 是否开启消息通知 0否 1是 */
  notice?: boolean;
  /** 草稿内容 */
  draft?: string;
  /** 是否置顶 0否 1是 */
  pined?: boolean;
  /** 是否免打扰 0否 1是 */
  disturb?: boolean;
}

/**
 * 会话查询类型
 */
export interface ChatSessionQueryType {
  /** 拥有者ID */
  ownerId: string;
  /** 会话ID（群聊时为群ID） */
  sessionId: string;
}

/**
 * 会话删除类型
 */
export interface ChatSessionDeleteType {
  /** 拥有者ID */
  ownerId: string;
  /** 会话ID（群聊时为群ID） */
  sessionId: string;
}
